package cn.bugstack.domain.RPCtoTicket;

import org.springframework.web.bind.annotation.GetMapping;

/**
 * TODO
 *
 * @Description
 * @Author 1
 * @Date 2024/8/6 22:24
 **/

//采用dubbo去远程调用购票模块
public interface IDubboTicket {
    //以下逻辑都是去调用火车购票模块的方法
    //缓存中放车站，车次，车厢，座位的信息的数据结构，需要四元。但redis没有，所以我们暂时先不考虑放redis中这些信息
    //一、购票方法
    //1.根据车次拿出车厢信息


    //2.校验是否有余票(这里完成高并发的校验)
    //2.1.令牌大闸

    //2.2.分布式锁(redisson看门狗或redLock红锁，推荐前者)


    //3.根据车厢信息拿出车次信息，并循环的从中去找满足条件的位置(选座逻辑实现)


    //4.找得到直接异步MQ[下单+扣减库存+支付+购票流水(每日车次信息)](事务完成)
    //4.1.事务完成上面的事情

    //5.找不到直接返回false


    //二、每日车次数据生成方法，未来15日车次数据生成方法(这个可以在购票模块中写就好)


    //三、项目优化，做限流熔断和降级

    //四、项目优化，日志链路监控

    //五、车票查询(es,要做es和mysql的数据同步，采用cannal)

    //六、


}
